#ifndef _BLUE_DIJKSTRA_H_
#define _BLUE_DIJKSTRA_H_

#include <climits>
#include <vector>

namespace blue{
    class AlgDijkstra{
        public: AlgDijkstra(std::vector<std::vector<int> > &map);

        // 节点编号从0开始，返回所有节点的前置节点列表
        public: std::vector<int> plan(int start_node, int end_node);

        private: int minDistance(std::vector<int> dist, std::vector<bool> sptSet);

        public: static const int INF;
        private: std::vector<std::vector<int> > map_;   // Map.
        private: int node_max_;                // Max count for node.
        private: std::vector<int> pre_;        // Previous node which is closest to the origin.
    };
}

#endif